The present disclosure relates to technology for encoding and decoding data.
Once a set of memory cells have been programmed, data may be read from the memory cells by sensing the programmed states of the memory cells. However, sensed programmed states can sometimes vary from the written programmed states due to one or more factors. Error detection and correction algorithms can be used to detect and/or correct data errors resulting from sensed programmed states that do not match written programmed states.
A wide variety of error detection and correction algorithms have been developed. In general, such algorithms involve adding one or more redundant bits to the actual data to be stored. Herein, these redundant bits will be referred to as “parity bits.” A wide variety of algorithms may be used to generate the parity bits. The combination of the data bits and parity bits are referred to as a codeword, which is what is stored to the memory cells. When the codeword is read back from the memory cells, typically an inverse of the algorithm is applied to recover the actual data.
Error detection and correction algorithms different in their strength, which refers to the ability to detect and/or correct a certain number of errors per codeword. For example, some error detection and correction algorithms may be able to detect up to two errors and correct a single error in a codeword.